基础网络配置

今天在测试准备环境的时候,发现一些网络配置问题还处理不好,或者没有整体概念,特整理如下。主要包含:

  • centOS 6 的网络基础配置
  • centOS 7 的网络基础配置

常见的需求

常见的配置项

  • 主机名称
  • IP
    • 动态,依赖于DHCP
    • 静态,直接配置IP
  • 子网掩码
  • 网关
  • DNS
  • 防火墙

centOS 6

network主要配置文件

  • /etc/hosts
    • 配置host name & ip mapping
    • 需要配置 127.0.0.1
  • /etc/resolv.conf
    • 配置 DNS
  • /etc/sysconfig/network
    • 配置 global interface
  • /etc/sysconfig/network-scripts/ifcfg-interface-name
    • 每个 interface 都需要配置

配置基础网络

主机名称

修改 /etc/sysconfig/network 文件,如下:

HOSTNAME=penguin.example.com
  • 修改 network 文件会永久生效
  • 需要重启网络服务或者重启操作系统

关于 HOSTNAME 的格式,redhat推荐:

  • 小写
  • 满足fully qualified domain name (FQDN),比如host.example.com
  • 不使用空格或dots(这个有点儿困惑,FQDN不就要求使用dot么)

也可以通过修改 /etc/hosts 文件来配置 HOSTNAME,如:

192.168.1.2 penguin.example.com penguin

IP & 子网掩码

IP配置要在具体的网卡的配置文件中配置(文件名形如ifcfg-eth0)

下面是静态 IP 的配置 demo

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=10.0.1.27
USERCTL=no

下面是基于 DHCP 的 IP 配置

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

关于interface config files的详细配置,参考这里

配置完成后如何生效??如何check??

网关

/etc/sysconfig/network 中可以配置,如下:

GATEWAY=192.168.1.1

也可以在 ifcfg-eth0 中配置,如下:

GATEWAY=192.168.1.1

配置按照 /etc/sysconfig/network ifcfg-eth0 的顺序被加载,最后读取到的 GATEWAY 的值是默认网关。查看默认网关的信息,可以使用:

route -n

DNS

/etc/resolve.conf 中配置,如下:

nameserver 100.2.22.2

另外 DNS 在 ifcfg-eth0 配置文件中也可以配置,如下:

# where address is a name server address to be placed in /etc/resolv.conf provided that the PEERDNS directive is not set to no.
DNS{1,2}=address

配置完成后即生效。通过 ping 具体的 HOSTNAME 来验证 DNS 是否生效。

防火墙

针对防火墙,一般是某些服务需要特定端口的权限。两种方式:

  • 开发指定端口的权限
  • 关闭防火墙服务

都是通过 iptables 完成的。具体可以参考:

centOS 7

  • redhat7 network guide
    • redhat 7 的网络指导手册
    • 不得不吹比 6 的文档结构层次好,对新手更友好

7 与 6 相比,网络部分的变化还是挺大的。

配置基础网络

主机名称

分三种 hostname,分别是:

  • static:对应 6 中的 hostname,与 6 中 hostname 类似
  • transient:kernel 维护的 hostname,初始化取值自 static,可能被 DHCP 和 mDNS 改变
  • pretty:对用户展示用的 UTF8 格式的 hostname

设置的工具建议使用 hostmanectl,如下:

hostnamectl set-hostname name

修改完成可以通过:

hostnamectl status

来进行验证。

更详细的可以参考文档:

IP & 子网掩码

redhat IP 配置

直接修改文件

文件位置是:/etc/sysconfig/network-scripts/ifcfg-eth0

静态 IP demo

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
PREFIX=24
IPADDR=10.0.1.27

动态 IP demo

DEVICE=em1
BOOTPROTO=dhcp
ONBOOT=yes

MAC & HWADDR 是可选的

另外还可以通过 ip 指令来配置,如:

# ip 命令的格式
ip addr [ add | del ] address dev ifname
# ip 的例子
ip address add 10.0.0.3/24 dev eth0

网关

可配置的有两个地方:

  • /etc/sysconfig/network GATEWAY
  • 每个 interface 的配置文件中配置的 GATEWAY

最后一个读到的 GATEWAY 值是默认的网关。

NOTE

在centOS 7 中,/etc/sysconfig/network 不建议使用。

最好的方式是通过 DHCP 获取的 GATEWAY。配置完成后,通过 ip route 来验证网关配置是否正确

DNS

除了跟 centOS 6 相同的修改 resolve.conf 文件之外,也可以直接在 interface 的配置文件中配置,如:

DNS1=ip-address
DNS2=ip-address

ip-address 是 DNS server 的地址。

防火墙

在centOS 7 中,防火墙建议使用firewalld来管理,如:

#开启
systemctl start firewalld
#关闭
systemctl stop firewalld

如果在firewalld开启的情况下,增加一条规则:

#开启https和http
firewall-cmd --zone=public --add-service http --permanent
firewall-cmd --zone=public --add-service https --permanent
firewall-cmd --reload
# 开启rabbitmq的management的15672
firewall-cmd --zone=public --add-port 15672/tcp --permanent
firewall-cmd --reload

更多复杂的管理,参考文章:introduce firewalld on centos